Para anunciar inmediatamente un error de control/entrada, tengo 2 opciones:
alert. [errorMessageHere] const el = document.createElement('div'); el.setAttribute('role', 'alert'); el.className = 'visually-hidden'; el.textContent = 'Some message here'; document.body.append(el); .visually-hidden { position: absolute; height: 1px; width: 1px; top: 0; left: 0; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); }window.speechSynthesis.speak . NVDA anuncia [errorMessageHere] const speakObj = new SpeechSynthesisUtterance('Some message here'); window.speechSynthesis.speak(speakObj)Lo que realmente noto es que en NVDA puedes deshabilitar texto a voz y mostrar el visor de voz. El primer caso se registrará en el visor de voz, pero el segundo caso, no. NVDA anuncia texto directamente cuando se abre NVDA, incluso si el texto a voz está deshabilitado.
Preferiría usar window.speechSynthesis.speak en lugar de crear HTMLElements adicionales para cada caso cuando se deban anunciar algunos detalles/errores, pero no estoy seguro de si es la alternativa correcta del rol 'alerta' ya que window.speechSynthesis.speak no lo es registrado por NVDA en absoluto (pero solo anunciado).
¿Podría ayudarme a entender cuál es la mejor manera de ser anunciado/leído por el lector de pantalla?